//
//  main.m
//  自定义类实现copy
//
//  Created by wenjim on 17/10/26.
//  Copyright © 2017年 WenJim. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"

#import "Student.h"

int main(int argc, const char * argv[]) {
    
    
    /*
     1.以后想让自定义的对象能够被copy，只需要遵守NSCopying协议
     2.实现协议中的 -(id)copyWithZone:(NSZone *)zone
     3.在 -(id)copyWithZone:(NSZone *)zone 方法中创建一个副本对象，然后将当前对象的值赋值给副本对象即可
     */
    Person * p = [[Person alloc] init];
    p.age = 30;
    p.name = @"cwj";
    
//    Person * p2 = [p copy];
    Person * p2 = [p mutableCopy];
    NSLog(@"%@",p2);
    
    
    Student * s = [[Student alloc] init];
    
    s.age = 25;
    s.height = 1.72;
    s.name = @"cwj";
    NSLog(@"s = %@",s);
    
    // 如果想让子类在copy的时候保留子类的属性，那么必须重写 -(id)copyWithZone:(NSZone *)zone 方法，在该方法中先调用父类创建副本设置值，然后再设置子类特有的值
    Student * s2 = [s copy];
    NSLog(@"s2 = %@",s2);
    
    return 0;
}
